package qc.module.demo.api.controller;

import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import qc.common.core.exception.QCPromptException;
import qc.common.core.unify.QCUnifyReturnValue;

/**
 * 网关路由测试
 * <p>
 * 测试结果：
 * 在nacos中对网关进行路由配置，在gateway的routes节点下配置路由集合
 * 单个微服务路由如下：访问url以/qc/开头的调用负载均衡中的module-platform服务，最终访问地址中没有开头的/qc/
 * 要点：filters下的RewritePath必须配置，否则不会跳转到指定的微服务
 * - id: qc
 * uri: lb://module-platform
 * predicates:
 * - Path=/qc/**
 * filters:
 * - RewritePath=/qc(?<segment>/?.*), $\{segment}
 * <p>
 * 在最后配置一个默认路由，其他未指定的访问demo微服务，如下：
 * - id: default
 * uri: lb://module-demo
 * predicates:
 * - Path=/**
 *
 * @author QuCheng Tech
 * @create 2023/1/11
 */
@RestController
//@RequestMapping("/demo/qzj")
@RequestMapping("/route")
public class GatewayRouteController {

    @GetMapping("/test")
    public String test(@RequestParam(value = "id", required = false) String id) throws Exception {
        if (StringUtils.isBlank(id))
            //throw new QCPromptException("传入的参数id不能为空");
            return QCUnifyReturnValue.Warn("GatewayRouteController——传入的参数id不能为空");

        if (id.equals("ex"))
            throw new Exception("GatewayRouteController——测试api中抛出异常");
        if (id.equals("exx"))
            throw new QCPromptException("GatewayRouteController——测试api中抛出异常");

        return QCUnifyReturnValue.Success("GatewayRouteController——返回成功信息");
    }
}
